package com.kk.xhr.model.service;

import com.kk.xhr.common.pojo.AppraiseResultEnum;
import com.kk.xhr.model.dto.AppraiseDTO;
import com.kk.xhr.model.dto.AppraiseQueryRequestDTO;
import com.kk.xhr.model.dto.PageDto;

import java.util.List;
import java.util.Optional;
import java.util.Set;

/**
 * 考评服务接口
 *
 * @author kkmystery
 * @version 1.0 2021/3/6
 * @since 1.0.0
 */
public interface IAppraiseService {

    /**
     * 根据id查询考评dto
     *
     * @param id 主键id
     * @return AppraiseDTO
     */
    Optional<AppraiseDTO> queryById(Long id);

    /**
     * 分页查询
     *
     * @param dto 查询dto
     * @return pageDTO
     */
    PageDto<AppraiseDTO> queryPage(AppraiseQueryRequestDTO dto);

    /**
     * 根据userId查询考评dto
     *
     * @param userId 主键id
     * @return AppraiseDTO列表
     */
    List<AppraiseDTO> queryByUserId(Long userId);

    /**
     * 根据用户列表查询未生效的考评dto
     *
     * @param ids 用户列表
     */
    List<AppraiseDTO> queryNotActive(Set<Long> ids);

    /**
     * 新增考评
     *
     * @param userIds 用户列表
     * @param dto     考评dto
     * @return 是否成功
     */
    boolean add(List<Long> userIds, AppraiseDTO dto);

    /**
     * 更新考评
     *
     * @param dto 考评dto
     * @return 是否成功
     */
    boolean modify(AppraiseDTO dto);

    /**
     * 更新考评状态
     *
     * @param id     主键id
     * @param status 状态
     * @return 是否成功
     */
    boolean modifyStatus(Long id, AppraiseResultEnum status);
}
